package com.kurt.repository;

import com.kurt.entity.SysOperLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 操作日志Repository接口
 * 提供操作日志数据访问方法
 */
@Repository
public interface SysOperLogRepository extends JpaRepository<SysOperLog, String>, JpaSpecificationExecutor<SysOperLog> {

    /**
     * 根据操作人员查找日志
     *
     * @param operName 操作人员
     * @return 日志列表
     */
    List<SysOperLog> findByOperName(String operName);

    /**
     * 根据业务类型查找日志
     *
     * @param businessType 业务类型
     * @return 日志列表
     */
    List<SysOperLog> findByBusinessType(Integer businessType);

    /**
     * 根据操作状态查找日志
     *
     * @param status 操作状态
     * @return 日志列表
     */
    List<SysOperLog> findByStatus(Integer status);

    /**
     * 根据操作时间范围查找日志
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 日志列表
     */
    List<SysOperLog> findByOperTimeBetween(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 根据租户ID查找日志
     *
     * @param tenantId 租户ID
     * @return 日志列表
     */
    List<SysOperLog> findByTenantId(String tenantId);

    /**
     * 根据操作人员和时间范围查找日志
     *
     * @param operName  操作人员
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 日志列表
     */
    List<SysOperLog> findByOperNameAndOperTimeBetween(String operName, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 查找指定时间之前的日志
     *
     * @param operTime 操作时间
     * @return 日志列表
     */
    List<SysOperLog> findByOperTimeBefore(LocalDateTime operTime);

    /**
     * 删除指定时间之前的日志
     *
     * @param operTime 操作时间
     */
    void deleteByOperTimeBefore(LocalDateTime operTime);

}
